/*
 * @Description:
 * @Version:
 * @Author: Troubadour
 * @Date: 2023-01-16 22:02:59
 * @LastEditors: Troubadour 2276791354@qq.com
 * @LastEditTime: 2023-11-05 00:29:43
 */

#ifndef  __TFT_1_3_H__
#define  __TFT_1_3_H__

#include "main.h"
#include "stdlib.h"

/* TFT 宽和高 */
#define TFT_WIDE                        (320)
#define TFT_HIGH                        (480)
/* OLED模式设置 */
/* 0:4线串行模式 */
/* 1:并行8080模式 */
/* -----------------TFT端口定义---------------- */
/* 使用硬件SPI */
#define TFT_HWSPI_ENABLE                (1)
#if (TFT_HWSPI_ENABLE)
#include "spi.h"

#else

#endif  /* TFT_HWSPI_ENABLE */
#define TFT_CS(n)               HAL_GPIO_WritePin(TFT_CS_GPIO_Port, TFT_CS_Pin, (n) ? (GPIO_PIN_SET) : (GPIO_PIN_RESET))
#define TFT_RES(n)              HAL_GPIO_WritePin(TFT_RES_GPIO_Port, TFT_RES_Pin, (n) ? (GPIO_PIN_SET) : (GPIO_PIN_RESET))
// 0: Cmd, 1: Data
#define TFT_DC(n)               HAL_GPIO_WritePin(TFT_DC_GPIO_Port, TFT_DC_Pin, (n) ? (GPIO_PIN_SET) : (GPIO_PIN_RESET))
#define TFT_BLK(n)              HAL_GPIO_WritePin(TFT_BLK_GPIO_Port, TFT_BLK_Pin, (n) ? (GPIO_PIN_SET) : (GPIO_PIN_RESET))

/* ----------------------> Color <---------------------- */
// 画笔颜色
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40 // 棕色
#define BRRED 0XFC07 // 棕红色
#define GRAY 0X8430  // 灰色
// GUI颜色
#define DARKBLUE 0X01CF  // 深蓝色
#define LIGHTBLUE 0X7D7C // 浅蓝色
#define GRAYBLUE 0X5458  // 灰蓝色
// 以上三色为PANEL的颜色
#define LIGHTGREEN 0X841F // 浅绿色
#define LGRAY 0XC618      // 浅灰色(PANNEL),窗体背景色
#define LGRAYBLUE 0XA651 // 浅灰蓝色(中间层颜色)
#define LBBLUE 0X2B12    // 浅棕蓝色(选择条目的反色)
/* ----------------------> Color End <---------------------- */

void TFT_Write_Data(uint8_t data);
void TFT_Write_Buff(uint8_t data, uint16_t len);
void TFT_Write_Data8(uint8_t data);
void TFT_Write_Data16(uint16_t data);
void TFT_Write_REG(uint8_t cmd);
void TFT_Write_REG_DATA(uint8_t reg, uint8_t data);
void TFT_Address_set(uint32_t x1, uint32_t y1, uint32_t x2, uint32_t y2);
void TFT_ST7796_Init(void);
void TFT_Init(void);


#endif  /* __TFT_1_3_H__ */
